// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package kankan.wheel.widget; import android.content.Context; import android.content.res.Resources; import android.database.DataSetObserver; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.util.AttributeSet; import android.util.TypedValue; import android.view.MotionEvent; import android.view.View; import android.view.ViewParent; import android.view.animation.Interpolator; import android.widget.LinearLayout; import cn.com.smartdevices.bracelet.Debug; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import kankan.wheel.widget.adapters.WheelViewAdapter; // Referenced classes of package kankan.wheel.widget: // WheelRecycle, d, e, WheelScroller, // c, ItemsRange, OnWheelChangedListener, OnWheelClickedListener, // OnWheelScrollListener public class WheelView extends View { private static final int c[] = { 0xff111111, 0xaaaaaa, 0xaaaaaa }; private static final int d = 10; private static final int e = 10; private static final int f = 5; private static final String g = "WheelView"; private float A; private float B; private DataSetObserver C; boolean a; WheelScroller.ScrollingListener b; private int h; private int i; private int j; private Drawable k; private GradientDrawable l; private GradientDrawable m; private WheelScroller n; private boolean o; private int p; private LinearLayout q; private int r; private WheelViewAdapter s; private WheelRecycle t; private List u; private List v; private List w; private int x; private Paint y; private String z; public WheelView(Context context) { super(context); h = 0; i = 5; j = 0; a = false; t = new WheelRecycle(this); u = new LinkedList(); v = new LinkedList(); w = new LinkedList(); x = 0x7f0200ba; z = ""; A = 50F; B = 80F; b = new d(this); C = new e(this); a(context); } public WheelView(Context context, AttributeSet attributeset) { super(context, attributeset); h = 0; i = 5; j = 0; a = false; t = new WheelRecycle(this); u = new LinkedList(); v = new LinkedList(); w = new LinkedList(); x = 0x7f0200ba; z = ""; A = 50F; B = 80F; b = new d(this); C = new e(this); a(context); } public WheelView(Context context, AttributeSet attributeset, int i1) { super(context, attributeset, i1); h = 0; i = 5; j = 0; a = false; t = new WheelRecycle(this); u = new LinkedList(); v = new LinkedList(); w = new LinkedList(); x = 0x7f0200ba; z = ""; A = 50F; B = 80F; b = new d(this); C = new e(this); a(context); } private int a(int i1, int j1) { int k1; a(); q.setLayoutParams(new android.view.ViewGroup.LayoutParams(-2, -2)); q.measure(android.view.View.MeasureSpec.makeMeasureSpec(i1, 0), android.view.View.MeasureSpec.makeMeasureSpec(0, 0)); k1 = q.getMeasuredWidth(); if (j1 != 0x40000000) goto _L2; else goto _L1 _L1: q.measure(android.view.View.MeasureSpec.makeMeasureSpec(i1 - 20, 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(0, 0)); return i1; _L2: int l1 = Math.max(k1 + 20, getSuggestedMinimumWidth()); if (j1 != 0x80000000 || i1 >= l1) { i1 = l1; } if (true) goto _L1; else goto _L3 _L3: } private int a(LinearLayout linearlayout) { if (linearlayout != null && linearlayout.getChildAt(0) != null) { j = linearlayout.getChildAt(0).getMeasuredHeight(); } return Math.max(j * i - (10 * j) / 50, getSuggestedMinimumHeight()); } static int a(WheelView wheelview) { return wheelview.p; } private void a() { if (k == null) { k = getContext().getResources().getDrawable(x); } if (l == null) { l = new GradientDrawable(); } if (m == null) { m = new GradientDrawable(); } } private void a(int i1) { p = i1 + p; int j1 = b(); int k1 = p / j1; int l1 = h - k1; int i2 = s.getItemsCount(); int j2 = p % j1; if (Math.abs(j2) <= j1 / 2) { j2 = 0; } if (a && i2 > 0) { int k2; int l2; int i3; int j3; if (j2 > 0) { int i4 = l1 - 1; int j4 = k1 + 1; j3 = i4; l2 = j4; } else if (j2 < 0) { int k3 = l1 + 1; int l3 = k1 - 1; j3 = k3; l2 = l3; } else { j3 = l1; l2 = k1; } for (; j3 < 0; j3 += i2) { } k2 = j3 % i2; } else if (l1 < 0) { l2 = h; k2 = 0; } else if (l1 >= i2) { l2 = 1 + (h - i2); k2 = i2 - 1; } else if (l1 > 0 && j2 > 0) { k2 = l1 - 1; l2 = k1 + 1; } else if (l1 < i2 - 1 && j2 < 0) { k2 = l1 + 1; l2 = k1 - 1; } else { k2 = l1; l2 = k1; } i3 = p; if (k2 != h) { setCurrentItem(k2, false); } else { invalidate(); } p = i3 - l2 * j1; if (p > getHeight()) { p = p % getHeight() + getHeight(); } } private void a(Context context) { n = new WheelScroller(getContext(), b); y = new Paint(); addChangingListener(new c(this)); } private void a(Canvas canvas) { int i1 = (int)(1.5D * (double)b()); l.setBounds(0, 0, getWidth(), i1); l.draw(canvas); m.setBounds(0, getHeight() - i1, getWidth(), getHeight()); m.draw(canvas); } static void a(WheelView wheelview, int i1) { wheelview.a(i1); } private boolean a(int i1, boolean flag) { View view = c(i1); boolean flag1 = false; if (view != null) { if (flag) { q.addView(view, 0); } else { q.addView(view); } flag1 = true; } return flag1; } static boolean a(WheelView wheelview, boolean flag) { wheelview.o = flag; return flag; } private int b() { if (j != 0) { return j; } if (q != null && q.getChildAt(0) != null) { j = q.getChildAt(0).getHeight(); return j; } else { return getHeight() / i; } } static int b(WheelView wheelview, int i1) { wheelview.p = i1; return i1; } static WheelScroller b(WheelView wheelview) { return wheelview.n; } private void b(int i1, int j1) { int k1 = i1 - 20; q.layout(0, 0, k1, j1); } private void b(Canvas canvas) { canvas.save(); canvas.translate(10F, -((h - r) * b() + (b() - getHeight()) / 2) + p); q.draw(canvas); canvas.restore(); } private boolean b(int i1) { return s != null && s.getItemsCount() > 0 && (a || i1 >= 0 && i1 < s.getItemsCount()); } private View c(int i1) { if (s == null || s.getItemsCount() == 0) { return null; } int j1 = s.getItemsCount(); if (!b(i1)) { return s.getEmptyItem(t.getEmptyItem(), q); } for (; i1 < 0; i1 += j1) { } int k1 = i1 % j1; return s.getItem(k1, t.getItem(), q); } private ItemsRange c() { if (b() == 0) { return null; } int i1 = h; int j1; for (j1 = 1; j1 * b() < getHeight(); j1 += 2) { i1--; } if (p != 0) { if (p > 0) { i1--; } int k1 = j1 + 1; int l1 = p / b(); i1 -= l1; j1 = (int)((double)k1 + Math.asin(l1)); } return new ItemsRange(i1, j1); } private void c(Canvas canvas) { int i1 = getHeight() / 2; int j1 = (int)(1.2D * (double)(b() / 2)); k.setBounds(0, i1 - j1, getWidth(), j1 + i1); canvas.drawText(z, (float)(getWidth() / 2) + B, (float)i1 - A, y); k.draw(canvas); } static boolean c(WheelView wheelview) { return wheelview.o; } private boolean d() { ItemsRange itemsrange; boolean flag; int i1; int k1; itemsrange = c(); if (q != null) { int l1 = t.recycleItems(q, r, itemsrange); int j1; if (r != l1) { flag = true; } else { flag = false; } r = l1; } else { f(); flag = true; } if (!flag) { if (r != itemsrange.getFirst() || q.getChildCount() != itemsrange.getCount()) { flag = true; } else { flag = false; } } if (r <= itemsrange.getFirst() || r > itemsrange.getLast()) goto _L2; else goto _L1 _L1: k1 = -1 + r; _L7: if (k1 >= itemsrange.getFirst() && a(k1, true)) goto _L4; else goto _L3 _L3: i1 = r; for (j1 = q.getChildCount(); j1 < itemsrange.getCount(); j1++) { if (!a(j1 + r, false) && q.getChildCount() == 0) { i1++; } } break; /* Loop/switch isn't completed */ _L4: r = k1; k1--; continue; /* Loop/switch isn't completed */ _L2: r = itemsrange.getFirst(); if (true) goto _L3; else goto _L5 _L5: r = i1; return flag; if (true) goto _L7; else goto _L6 _L6: } private void e() { if (d()) { a(getWidth(), 0x40000000); b(getWidth(), getHeight()); } } private void f() { if (q == null) { q = new LinearLayout(getContext()); q.setOrientation(1); } } private void g() { int i1; if (q != null) { t.recycleItems(q, r, new ItemsRange()); } else { f(); } i1 = i / 2; for (int j1 = i1 + h; j1 >= h - i1; j1--) { if (a(j1, true)) { r = j1; } } } public void addChangingListener(OnWheelChangedListener onwheelchangedlistener) { u.add(onwheelchangedlistener); } public void addClickingListener(OnWheelClickedListener onwheelclickedlistener) { w.add(onwheelclickedlistener); } public void addScrollingListener(OnWheelScrollListener onwheelscrolllistener) { v.add(onwheelscrolllistener); } public int getCurrentItem() { if (s != null && s.isNeedLoop()) { return h % s.getBASE_BUNDLE(); } else { return h; } } public int getRealCurrentItem() { return h; } public WheelViewAdapter getViewAdapter() { return s; } public int getVisibleItems() { return i; } public void invalidateWheel(boolean flag) { if (!flag) goto _L2; else goto _L1 _L1: t.clearAll(); if (q != null) { q.removeAllViews(); } p = 0; _L4: invalidate(); return; _L2: if (q != null) { t.recycleItems(q, r, new ItemsRange()); } if (true) goto _L4; else goto _L3 _L3: } public boolean isCyclic() { return a; } protected void notifyChangingListeners(int i1, int j1) { for (Iterator iterator = u.iterator(); iterator.hasNext(); ((OnWheelChangedListener)iterator.next()).onChanged(this, i1, j1)) { } } protected void notifyClickListenersAboutClick(int i1) { for (Iterator iterator = w.iterator(); iterator.hasNext(); ((OnWheelClickedListener)iterator.next()).onItemClicked(this, i1)) { } } protected void notifyScrollingListenersAboutEnd() { for (Iterator iterator = v.iterator(); iterator.hasNext(); ((OnWheelScrollListener)iterator.next()).onScrollingFinished(this)) { } } protected void notifyScrollingListenersAboutStart() { for (Iterator iterator = v.iterator(); iterator.hasNext(); ((OnWheelScrollListener)iterator.next()).onScrollingStarted(this)) { } } protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (s != null && s.getItemsCount() > 0) { e(); b(canvas); c(canvas); } } protected void onLayout(boolean flag, int i1, int j1, int k1, int l1) { b(k1 - i1, l1 - j1); } protected void onMeasure(int i1, int j1) { int k1 = android.view.View.MeasureSpec.getMode(i1); int l1 = android.view.View.MeasureSpec.getMode(j1); int i2 = android.view.View.MeasureSpec.getSize(i1); int j2 = android.view.View.MeasureSpec.getSize(j1); g(); int k2 = a(i2, k1); if (l1 != 0x40000000) { int l2 = a(q); if (l1 == 0x80000000) { j2 = Math.min(l2, j2); } else { j2 = l2; } } setMeasuredDimension(k2, j2); } public boolean onTouchEvent(MotionEvent motionevent) { if (!isEnabled() || getViewAdapter() == null) { return true; } motionevent.getAction(); JVM INSTR tableswitch 1 2: default 44 // 1 73 // 2 53; goto _L1 _L2 _L3 _L1: return n.onTouchEvent(motionevent); _L3: if (getParent() != null) { getParent().requestDisallowInterceptTouchEvent(true); } continue; /* Loop/switch isn't completed */ _L2: if (!o) { int i1 = (int)motionevent.getY() - getHeight() / 2; int j1; int k1; if (i1 > 0) { j1 = i1 + b() / 2; } else { j1 = i1 - b() / 2; } k1 = j1 / b(); if (k1 != 0 && b(k1 + h)) { notifyClickListenersAboutClick(k1 + h); } } if (true) goto _L1; else goto _L4 _L4: } public void removeChangingListener(OnWheelChangedListener onwheelchangedlistener) { u.remove(onwheelchangedlistener); } public void removeClickingListener(OnWheelClickedListener onwheelclickedlistener) { w.remove(onwheelclickedlistener); } public void removeScrollingListener(OnWheelScrollListener onwheelscrolllistener) { v.remove(onwheelscrolllistener); } public void scroll(int i1, int j1) { int k1 = i1 * b() - p; n.scroll(k1, j1); } public WheelView setCenterDrawable(int i1) { x = i1; if (k == null) { k = getContext().getResources().getDrawable(x); } invalidate(); return this; } public WheelView setCenterStyle(String s1, float f1) { return setCenterStyle(s1, 0x7f090003, 10, f1, 1.5F); } public WheelView setCenterStyle(String s1, int i1, float f1) { return setCenterStyle(s1, i1, 10, f1, 1.5F); } public WheelView setCenterStyle(String s1, int i1, int j1, float f1, float f2) { z = s1; B = TypedValue.applyDimension(1, f1, getResources().getDisplayMetrics()); A = TypedValue.applyDimension(1, f2, getResources().getDisplayMetrics()); float f3 = TypedValue.applyDimension(1, j1, getResources().getDisplayMetrics()); y.setTextSize(f3); y.setFakeBoldText(false); y.setAntiAlias(true); y.setColor(getResources().getColor(i1)); return this; } public WheelView setCurrentItem(int i1) { setCurrentItem(i1, false); return this; } public void setCurrentItem(int i1, boolean flag) { if (s != null && s.getItemsCount() != 0) goto _L2; else goto _L1 _L1: return; _L2: int j1; j1 = s.getItemsCount(); if (i1 >= 0 && i1 < j1) { continue; /* Loop/switch isn't completed */ } if (!a) goto _L1; else goto _L3 _L3: for (; i1 < 0; i1 += j1) { } i1 %= j1; if (i1 == h) goto _L1; else goto _L4 _L4: if (!flag) goto _L6; else goto _L5 _L5: int l1 = i1 - h; if (!a) goto _L8; else goto _L7 _L7: int i2 = (j1 + Math.min(i1, h)) - Math.max(i1, h); if (i2 >= Math.abs(l1)) goto _L8; else goto _L9 _L9: if (l1 >= 0) { i2 = -i2; } _L11: scroll(i2, 0); return; _L6: p = 0; int k1 = h; h = i1; notifyChangingListeners(k1, h); invalidate(); return; _L8: i2 = l1; if (true) goto _L11; else goto _L10 _L10: } public WheelView setCurrentItemLooped(int i1) { return setCurrentItemLooped(i1, false); } public WheelView setCurrentItemLooped(int i1, boolean flag) { if (s.isNeedLoop()) { Debug.i("WheelView", (new StringBuilder()).append("setCurrentItemLooped: ").append(i1).toString()); i1 += s.getInitLoopBase(); Debug.i("WheelView", (new StringBuilder()).append(", after add loopbase:").append(i1).toString()); } setCurrentItem(i1, flag); return this; } public void setCyclic(boolean flag) { a = flag; invalidateWheel(false); } public void setInterpolator(Interpolator interpolator) { n.setInterpolator(interpolator); } public WheelView setViewAdapter(WheelViewAdapter wheelviewadapter) { if (s != null) { s.unregisterDataSetObserver(C); } s = wheelviewadapter; if (s != null) { s.registerDataSetObserver(C); } invalidateWheel(true); return this; } public WheelView setVisibleItems(int i1) { i = i1; return this; } public void stopScrolling() { n.stopScrolling(); } }